﻿using System;
using System.Collections.Generic;
using System.Text;
using AccesoDatos.IDAO;
using Entidades;
using NHibernate;


namespace AccesoDatos.DAO
{
    public class DaoParticipante : IDAO.IDaoParticipante
    {
        public IList<Participante> SeleccionarTodos()
        {
            ISession sesion = ConfiguracionNHibernate.GetCurrentSession();
            sesion.BeginTransaction();
            IQuery query = sesion.CreateQuery("from Participante");
            IList<Participante> retorna = (IList<Participante>)query.List<Participante>();
            sesion.Transaction.Commit();
            return retorna;
        }

        public Participante SeleccionarPorId(int id)
        {
            throw new NotImplementedException();
        }

        public void Insertar(Participante c)
        {
            // throw new NotImplementedException();
            ISession sesion = ConfiguracionNHibernate.GetCurrentSession();
            ITransaction transaccion = null;
            try
            {
                transaccion = sesion.BeginTransaction();
                sesion.Save(c);
                transaccion.Commit();
                sesion.Flush();

            }
            catch (Exception e)
            {
                e.GetBaseException();
                if (transaccion != null)
                {
                    transaccion.Rollback();
                    throw;
                }
            }

        }

        public void Modificar(Participante c)
        {
            throw new NotImplementedException();
        }

        public void EliminarPorId(int id)
        {
            ISession sesion = ConfiguracionNHibernate.GetCurrentSession();
            sesion.BeginTransaction();
            sesion.Delete((Participante)sesion.Get(typeof(Participante), id));
            sesion.Transaction.Commit();
        }

        public IList<Participante> SeleccionarPorParametro(string parametro, string valor)
        {
            throw new NotImplementedException();
        }

        public IList<Participante> SeleccionarPorParametro(string parametro, int valor)
        {
            throw new NotImplementedException();
        }

       public IList<Participante> SeleccionarPar()
       {
           ISession sesion = ConfiguracionNHibernate.GetCurrentSession();
           sesion.BeginTransaction();
           IQuery query = sesion.CreateQuery("from Participante");
           IList<Participante> retorna = (IList<Participante>)query.List<Participante>();
           sesion.Transaction.Commit();
           return retorna;

       }
       public Participante ParticipantePorId(int id)
       {
            ISession sesion = ConfiguracionNHibernate.GetCurrentSession();
            sesion.BeginTransaction();
            Participante busqueda = (Participante)sesion.Get(typeof(Participante), id);
            sesion.Transaction.Commit();
           return busqueda;
       }
    }
}
